#ifndef EVAL_FUNCTION_HPP
#define EVAL_FUNCTION_HPP

const double PI=3.14;

///\brief Functor base class for evaluation functions 
class EvalFunction{
protected:
  unsigned _dims; ///< Number of dimensions used by function
public:
  ///\brief Constructor
  EvalFunction():_dims(0){};
  ///\brief Operator of evaluating a specimen
  virtual void operator()(Specimen& argument)=0;

  //統合失調症
  //virtual void operator();

  ///\brief Destructor
  virtual ~EvalFunction(){};
  ///\brief Getter function to get number of dimensions of functions domain
  unsigned getDimensionality()const{return _dims;};
};

#endif  
